package com.nettyBasic.n1_hello;

import io.netty.bootstrap.Bootstrap;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.string.StringEncoder;

import java.net.InetSocketAddress;

/**
 * @author： pang-yun
 * @date： 2021-09-10 17:45
 * 功能目的 ：用于 netty 客户端
 */

public class HelloClient {
    public static void main(String[] args) throws InterruptedException {
        //1. 启动类
        new Bootstrap()
                // 2. 添加事件的 EventLoop    accept   一个线程+选择器 不断循环
                .group(new NioEventLoopGroup())
                //3. 选择客户端的实现 channel    nio实现
                .channel(NioSocketChannel.class)
                //4. 添加处理器
                .handler(new ChannelInitializer<NioSocketChannel>() {
                    @Override // 在连接时被调用   添加初始化器
                    protected void initChannel(NioSocketChannel nioSocketChannel) throws Exception {
                        nioSocketChannel.pipeline().addLast(new StringEncoder());
                    }
                })
                // 5. 连接到服务器
                .connect(new InetSocketAddress(9999))
                .sync()    // 直到连接建立后才会运行 同步方法
                .channel() // 连接对象
                // 6. 想服务器发送数据
                .writeAndFlush("Herman"); // 发送数据  然后到  处理器 StringEncoder 中 将 字符串 转换为 ByteBUf
    }
}
